﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Biblioteca.Repositorio;
using Biblioteca.Model;

using System.Data;


namespace Biblioteca.Controlador
{

    public class ControladorCliente
    {


        RepositorioCliente repo_cli = new RepositorioCliente();

        RepositorioPedido repo_ped = new RepositorioPedido();



        public List<Cliente> listar()  

        {


            List<Cliente> dataTable = new List<Cliente>();

            try
            {

                dataTable = repo_cli.listar_Cliente();

            }
            catch (Exception e)
            {

                throw e;
            }

            return dataTable; 

        }



        public void incluir(Cliente cli)
        {

            try
            {
                
                repo_cli.incluir_Cliente(cli);

            }
            catch (Exception e)
            {

                throw e;
            }

        }

        public Boolean consultar_CNPJCliente(Cliente cli)
        {


            List<Cliente> consulta = new List<Cliente>();


            consulta = listar();

            bool resultado = false;


            foreach (var cliente in consulta)
            {

                if (cli.Cnpj.Equals(cliente.Cnpj))
                {

                    resultado = true;

                }



            }

            return resultado;

        }


        public Boolean verificar(Cliente cli) {

            Boolean situacao = false;

            List<Pedido> LstPedido = new List<Pedido>();

            LstPedido = repo_ped.listarPedido_Geral();

            foreach(var item in LstPedido){

                if (cli.CodCli.Equals(item.Clie.CodCli))
                    situacao = true;

            
            }


            return situacao;
        
        }


        public void excluir(Cliente cli)
        {
            try
            {
                                
                repo_cli.excluir_Cliente(cli);

            }
            catch (Exception e)
            {

                throw e;
            }

        }


        public void validar(Cliente cli)
        {


            try
            {

                if (cli.RazaoSocial.Trim() == "")
                {

                    throw new ArgumentException("Razão Social não pode ficar em branco");

                }

                if ((cli.Cnpj.Trim() == "") || (cli.Cnpj.Length < 14))
                {


                    throw new ArgumentException("CNPJ não preenchido corretamente");

                }



                if (cli.Endereco.Trim() == "")
                {

                    throw new ArgumentException("Endereço não pode ficar em Branco");

                }

                if (cli.Cidade.Trim() == "")
                {

                    throw new ArgumentException("Cidade não pode ficar em branco");

                }


                if (cli.Contato.Trim() == "")
                {

                    throw new ArgumentException("Contato não pode ficar em branco");

                }


                if ((cli.Telefone.Trim() == "") || (cli.Telefone.Trim().Length < 11))
                {

                    throw new ArgumentException("Telefone não foi preenchido corretamente");

                }



            }
            catch (Exception e)
            {

                throw e;
            }



        }


        public void alterar(Cliente cli)
        {
            try
            {

                repo_cli.alterar_Cliente(cli);

            }
            catch (Exception e)
            {

                throw e;
            }

        }



        public List<Cliente> pesquisarRazao(string nome)
        {

            List<Cliente> listaClienteRazao = new List<Cliente>();

            try
            {

                listaClienteRazao = repo_cli.pesquisar_ClienteRazao(nome);


            }
            catch (Exception e)
            {

                throw e;
            }

            return listaClienteRazao;

        }

        public List<Cliente> pesquisarCnpj(string cnpj)
        {

            List<Cliente> listaClienteCnpj = new List<Cliente>();

            try
            {
                listaClienteCnpj = repo_cli.pesquisar_ClienteCnpj(cnpj);
            }
            catch (Exception e)
            {
                throw e;
            }

            return listaClienteCnpj;
        }
    }
}
